<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>设计模式的艺术 | 软件架构的核心智慧</title>
    <link rel="stylesheet" href="https://cdn.staticfile.org/font-awesome/6.4.0/css/all.min.css">
    <link rel="stylesheet" href="https://cdn.staticfile.org/tailwindcss/2.2.19/tailwind.min.css">
    <link href="https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;500;600;700&family=Noto+Sans+SC:wght@300;400;500;700&display=swap" rel="stylesheet">
    <script src="https://cdn.jsdelivr.net/npm/mermaid@latest/dist/mermaid.min.js"></script>
    <style>
        body {
            font-family: 'Noto Sans SC', Tahoma, Arial, Roboto, "Droid Sans", "Helvetica Neue", "Droid Sans Fallback", "Heiti SC", "Hiragino Sans GB", Simsun, sans-serif;
            background-color: #f9f9f9;
            color: #333;
            line-height: 1.6;
        }
        h1, h2, h3, h4, .serif {
            font-family: 'Noto Serif SC', serif;
        }
        .hero-gradient {
            background: linear-gradient(135deg, #6e8efb 0%, #a777e3 100%);
        }
        .card-hover {
            transition: transform 0.3s ease, box-shadow 0.3s ease;
        }
        .card-hover:hover {
            transform: translateY(-5px);
            box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
        }
        .feature-icon {
            width: 60px;
            height: 60px;
            display: flex;
            align-items: center;
            justify-content: center;
            border-radius: 12px;
            margin-bottom: 1.5rem;
            color: white;
            font-size: 1.5rem;
        }
        .drop-cap::first-letter {
            float: left;
            font-size: 3.5em;
            line-height: 0.8;
            margin: 0.1em 0.2em 0 0;
            font-weight: 700;
            color: #6e8efb;
        }
        .timeline-item::before {
            content: "";
            position: absolute;
            left: -38px;
            top: 0;
            width: 12px;
            height: 12px;
            border-radius: 50%;
            background-color: #a777e3;
            border: 3px solid #fff;
            box-shadow: 0 0 0 2px #a777e3;
        }
    </style>
</head>
<body class="antialiased">
    <!-- Hero Section -->
    <section class="hero-gradient text-white py-20 md:py-32 px-4">
        <div class="container mx-auto max-w-6xl px-4">
            <div class="flex flex-col md:flex-row items-center">
                <div class="md:w-1/2 mb-10 md:mb-0">
                    <h1 class="text-4xl md:text-5xl font-bold mb-6 leading-tight">设计模式的艺术</h1>
                    <p class="text-xl md:text-2xl opacity-90 mb-8">软件架构的核心智慧与最佳实践</p>
                    <p class="text-lg opacity-85 mb-8 drop-cap">在软件开发的广阔天地中，设计模式犹如一套精妙的武林秘籍，为开发者提供了应对复杂设计挑战的经典解决方案。这些经过千锤百炼的模式，不仅是代码组织的艺术，更是软件工程智慧的结晶。</p>
                    <button class="bg-white text-indigo-600 hover:bg-gray-100 font-semibold py-3 px-6 rounded-lg transition duration-300 transform hover:-translate-y-1 shadow-lg">
                        探索设计模式 <i class="fas fa-arrow-right ml-2"></i>
                    </button>
                </div>
                <div class="md:w-1/2 md:pl-12">
                    <div class="bg-white bg-opacity-20 backdrop-filter backdrop-blur-lg rounded-xl p-6 shadow-xl">
                        <div class="mermaid">
                            graph TD
                            A[设计模式] --> B(创建型)
                            A --> C(结构型)
                            A --> D(行为型)
                            B --> B1[单例模式]
                            B --> B2[工厂方法]
                            B --> B3[抽象工厂]
                            C --> C1[适配器模式]
                            C --> C2[装饰器模式]
                            C --> C3[代理模式]
                            D --> D1[观察者模式]
                            D --> D2[策略模式]
                            D --> D3[命令模式]
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </section>

    <!-- What is Design Pattern -->
    <section class="py-16 px-4">
        <div class="container mx-auto max-w-6xl px-4">
            <div class="text-center mb-16">
                <h2 class="text-3xl md:text-4xl font-bold mb-4">什么是设计模式？</h2>
                <div class="w-24 h-1 bg-indigo-500 mx-auto"></div>
            </div>
            <div class="bg-white rounded-xl shadow-md overflow-hidden card-hover">
                <div class="p-8">
                    <p class="text-lg text-gray-700 mb-6">
                        <span class="font-semibold text-indigo-600">设计模式</span>是软件开发中一套被广泛接受的、经过验证的解决特定问题的通用方案。它们是针对在软件开发中经常遇到的设计问题的标准化解决方法。这些模式并不是现成的代码，而是指导如何设计和组织代码的模板。
                    </p>
                    <div class="flex items-center mt-6">
                        <div class="flex-shrink-0 bg-indigo-100 p-3 rounded-full">
                            <i class="fas fa-lightbulb text-indigo-600 text-xl"></i>
                        </div>
                        <div class="ml-4">
                            <p class="text-gray-600">设计模式由"四人帮"(GoF)在1994年首次系统化整理，收录了23种经典模式，至今仍是软件工程师的必备知识。</p>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </section>

    <!-- Benefits Section -->
    <section class="py-16 px-4 bg-gray-50">
        <div class="container mx-auto max-w-6xl px-4">
            <div class="text-center mb-16">
                <h2 class="text-3xl md:text-4xl font-bold mb-4">设计模式的五大核心价值</h2>
                <p class="text-xl text-gray-600">提升代码质量与开发效率的利器</p>
                <div class="w-24 h-1 bg-purple-500 mx-auto mt-4"></div>
            </div>
            <div class="grid md:grid-cols-2 lg:grid-cols-3 gap-8">
                <!-- Benefit 1 -->
                <div class="bg-white rounded-xl p-6 shadow-md card-hover">
                    <div class="feature-icon bg-indigo-500">
                        <i class="fas fa-recycle"></i>
                    </div>
                    <h3 class="text-xl font-bold mb-3">提高代码复用性</h3>
                    <p class="text-gray-600">设计模式通过提供可重用的解决方案，帮助开发者避免重复造轮子，提高了代码的复用性。经过验证的模式可以直接应用于相似场景，减少重复工作。</p>
                </div>
                
                <!-- Benefit 2 -->
                <div class="bg-white rounded-xl p-6 shadow-md card-hover">
                    <div class="feature-icon bg-purple-500">
                        <i class="fas fa-tools"></i>
                    </div>
                    <h3 class="text-xl font-bold mb-3">提升代码可维护性</h3>
                    <p class="text-gray-600">使用设计模式可以使代码更易于理解和修改。模式提供了清晰的设计结构和约定，帮助开发者快速定位和修复问题，降低了维护成本。</p>
                </div>
                
                <!-- Benefit 3 -->
                <div class="bg-white rounded-xl p-6 shadow-md card-hover">
                    <div class="feature-icon bg-blue-500">
                        <i class="fas fa-users"></i>
                    </div>
                    <h3 class="text-xl font-bold mb-3">促进设计一致性</h3>
                    <p class="text-gray-600">设计模式提供了一种通用的设计语言，使得团队中的所有成员都能够以一致的方式思考和交流设计问题，提高协作效率。</p>
                </div>
                
                <!-- Benefit 4 -->
                <div class="bg-white rounded-xl p-6 shadow-md card-hover">
                    <div class="feature-icon bg-green-500">
                        <i class="fas fa-expand"></i>
                    </div>
                    <h3 class="text-xl font-bold mb-3">增强系统灵活性和可扩展性</h3>
                    <p class="text-gray-600">设计模式通常涉及到解耦和模块化的设计，使得系统能够更容易地适应变化和扩展。例如，某个功能的修改或扩展不需要对系统的其他部分进行大量修改。</p>
                </div>
                
                <!-- Benefit 5 -->
                <div class="bg-white rounded-xl p-6 shadow-md card-hover">
                    <div class="feature-icon bg-red-500">
                        <i class="fas fa-puzzle-piece"></i>
                    </div>
                    <h3 class="text-xl font-bold mb-3">解决常见设计问题</h3>
                    <p class="text-gray-600">设计模式提供了对常见设计问题的有效解决方案。例如，单例模式解决了全局唯一对象的创建问题，观察者模式解决了对象间的通知机制问题。</p>
                </div>
                
                <!-- Benefit 6 -->
                <div class="bg-white rounded-xl p-6 shadow-md card-hover">
                    <div class="feature-icon bg-yellow-500">
                        <i class="fas fa-graduation-cap"></i>
                    </div>
                    <h3 class="text-xl font-bold mb-3">加速开发人员成长</h3>
                    <p class="text-gray-600">学习设计模式可以帮助开发者站在巨人的肩膀上，快速掌握优秀的设计思想和解决方案，避免常见的陷阱和错误。</p>
                </div>
            </div>
        </div>
    </section>

    <!-- Pattern Types -->
    <section class="py-16 px-4">
        <div class="container mx-auto max-w-6xl px-4">
            <div class="text-center mb-16">
                <h2 class="text-3xl md:text-4xl font-bold mb-4">设计模式的三大类型</h2>
                <p class="text-xl text-gray-600">根据目的和范围分类的经典模式</p>
                <div class="w-24 h-1 bg-blue-500 mx-auto mt-4"></div>
            </div>
            
            <div class="grid md:grid-cols-3 gap-8">
                <!-- Creational -->
                <div class="relative bg-white rounded-xl shadow-lg overflow-hidden card-hover">
                    <div class="absolute top-0 left-0 right-0 h-2 bg-indigo-500"></div>
                    <div class="p-6">
                        <div class="flex items-center mb-4">
                            <div class="bg-indigo-100 p-3 rounded-full mr-4">
                                <i class="fas fa-cube text-indigo-600"></i>
                            </div>
                            <h3 class="text-xl font-bold">创建型模式</h3>
                        </div>
                        <p class="text-gray-600 mb-4">关注对象的创建机制，提供创建对象的灵活方式，避免硬编码。</p>
                        <ul class="space-y-2">
                            <li class="flex items-start">
                                <i class="fas fa-check-circle text-indigo-500 mt-1 mr-2"></i>
                                <span>单例模式 (Singleton)</span>
                            </li>
                            <li class="flex items-start">
                                <i class="fas fa-check-circle text-indigo-500 mt-1 mr-2"></i>
                                <span>工厂方法 (Factory Method)</span>
                            </li>
                            <li class="flex items-start">
                                <i class="fas fa-check-circle text-indigo-500 mt-1 mr-2"></i>
                                <span>抽象工厂 (Abstract Factory)</span>
                            </li>
                        </ul>
                    </div>
                </div>
                
                <!-- Structural -->
                <div class="relative bg-white rounded-xl shadow-lg overflow-hidden card-hover">
                    <div class="absolute top-0 left-0 right-0 h-2 bg-purple-500"></div>
                    <div class="p-6">
                        <div class="flex items-center mb-4">
                            <div class="bg-purple-100 p-3 rounded-full mr-4">
                                <i class="fas fa-sitemap text-purple-600"></i>
                            </div>
                            <h3 class="text-xl font-bold">结构型模式</h3>
                        </div>
                        <p class="text-gray-600 mb-4">关注类和对象的组合方式，形成更大的结构，保持灵活性和效率。</p>
                        <ul class="space-y-2">
                            <li class="flex items-start">
                                <i class="fas fa-check-circle text-purple-500 mt-1 mr-2"></i>
                                <span>适配器模式 (Adapter)</span>
                            </li>
                            <li class="flex items-start">
                                <i class="fas fa-check-circle text-purple-500 mt-1 mr-2"></i>
                                <span>装饰器模式 (Decorator)</span>
                            </li>
                            <li class="flex items-start">
                                <i class="fas fa-check-circle text-purple-500 mt-1 mr-2"></i>
                                <span>代理模式 (Proxy)</span>
                            </li>
                        </ul>
                    </div>
                </div>
                
                <!-- Behavioral -->
                <div class="relative bg-white rounded-xl shadow-lg overflow-hidden card-hover">
                    <div class="absolute top-0 left-0 right-0 h-2 bg-green-500"></div>
                    <div class="p-6">
                        <div class="flex items-center mb-4">
                            <div class="bg-green-100 p-3 rounded-full mr-4">
                                <i class="fas fa-exchange-alt text-green-600"></i>
                            </div>
                            <h3 class="text-xl font-bold">行为型模式</h3>
                        </div>
                        <p class="text-gray-600 mb-4">关注对象间的通信和职责分配，使交互更灵活。</p>
                        <ul class="space-y-2">
                            <li class="flex items-start">
                                <i class="fas fa-check-circle text-green-500 mt-1 mr-2"></i>
                                <span>观察者模式 (Observer)</span>
                            </li>
                            <li class="flex items-start">
                                <i class="fas fa-check-circle text-green-500 mt-1 mr-2"></i>
                                <span>策略模式 (Strategy)</span>
                            </li>
                            <li class="flex items-start">
                                <i class="fas fa-check-circle text-green-500 mt-1 mr-2"></i>
                                <span>命令模式 (Command)</span>
                            </li>
                        </ul>
                    </div>
                </div>
            </div>
        </div>
    </section>

    <!-- History Timeline -->
    <section class="py-16 px-4 bg-gray-50">
        <div class="container mx-auto max-w-6xl px-4">
            <div class="text-center mb-16">
                <h2 class="text-3xl md:text-4xl font-bold mb-4">设计模式发展历程</h2>
                <p class="text-xl text-gray-600">从建筑到软件的智慧传承</p>
                <div class="w-24 h-1 bg-red-500 mx-auto mt-4"></div>
            </div>
            
            <div class="relative pl-12">
                <div class="absolute left-0 top-0 bottom-0 w-0.5 bg-gray-200 ml-6"></div>
                
                <!-- 1977 -->
                <div class="relative mb-12 timeline-item">
                    <div class="bg-white p-6 rounded-xl shadow-md">
                        <div class="flex items-center mb-2">
                            <span class="text-lg font-bold text-red-600 mr-2">1977</span>
                            <span class="text-sm text-gray-500">克里斯托弗·亚历山大</span>
                        </div>
                        <h3 class="text-xl font-bold mb-2">建筑模式语言的诞生</h3>
                        <p class="text-gray-600">建筑师克里斯托弗·亚历山大在《A Pattern Language》中首次提出模式概念，描述城镇、建筑和构造中的解决方案。这成为后来软件设计模式的灵感来源。</p>
                    </div>
                </div>
                
                <!-- 1987 -->
                <div class="relative mb-12 timeline-item">
                    <div class="bg-white p-6 rounded-xl shadow-md">
                        <div class="flex items-center mb-2">
                            <span class="text-lg font-bold text-red-600 mr-2">1987</span>
                            <span class="text-sm text-gray-500">沃德·坎宁安和肯特·贝克</span>
                        </div>
                        <h3 class="text-xl font-bold mb-2">软件中首次应用模式</h3>
                        <p class="text-gray-600">沃德·坎宁安和肯特·贝克首次将亚历山大模式语言的概念应用于软件开发，在OOPSLA会议上发表了《Using Pattern Languages for Object-Oriented Programs》论文。</p>
                    </div>
                </div>
                
                <!-- 1994 -->
                <div class="relative mb-12 timeline-item">
                    <div class="bg-white p-6 rounded-xl shadow-md">
                        <div class="flex items-center mb-2">
                            <span class="text-lg font-bold text-red-600 mr-2">1994</span>
                            <span class="text-sm text-gray-500">四人帮(GoF)</span>
                        </div>
                        <h3 class="text-xl font-bold mb-2">设计模式经典著作出版</h3>
                        <p class="text-gray-600">Erich Gamma, Richard Helm, Ralph Johnson和John Vlissides(四人帮)出版了《设计模式：可复用面向对象软件的基础》，系统化整理了23种经典设计模式，奠定了现代软件设计模式的基础。</p>
                    </div>
                </div>
                
                <!-- 2002 -->
                <div class="relative mb-12 timeline-item">
                    <div class="bg-white p-6 rounded-xl shadow-md">
                        <div class="flex items-center mb-2">
                            <span class="text-lg font-bold text-red-600 mr-2">2002</span>
                            <span class="text-sm text-gray-500">Martin Fowler</span>
                        </div>
                        <h3 class="text-xl font-bold mb-2">企业应用架构模式</h3>
                        <p class="text-gray-600">Martin Fowler出版了《企业应用架构模式》，将设计模式的思想扩展到企业级应用开发领域，提出了许多针对业务系统的新模式。</p>
                    </div>
                </div>
                
                <!-- Today -->
                <div class="relative timeline-item">
                    <div class="bg-white p-6 rounded-xl shadow-md">
                        <div class="flex items-center mb-2">
                            <span class="text-lg font-bold text-red-600 mr-2">今日</span>
                            <span class="text-sm text-gray-500">全球开发者</span>
                        </div>
                        <h3 class="text-xl font-bold mb-2">设计模式的持续发展</h3>
                        <p class="text-gray-600">设计模式已成为软件工程师的基本素养，新的模式不断涌现，特别是在分布式系统、微服务架构和云原生应用领域。同时，函数式编程等范式也带来了新的模式思想。</p>
                    </div>
                </div>
            </div>
        </div>
    </section>

    <!-- Footer -->
    <footer class="bg-gray-900 text-gray-300 py-12 px-4">
        <div class="container mx-auto max-w-6xl px-4">
            <div class="flex flex-col md:flex-row justify-between items-center">
                <div class="mb-6 md:mb-0">
                    <h3 class="text-xl font-bold text-white mb-2">技术小馆</h3>
                    <p class="text-gray-400">探索软件开发的无限可能</p>
                </div>
                <div>
                    <a href="http://www.yuque.com/jtostring" class="text-indigo-300 hover:text-white transition duration-300 flex items-center">
                        <i class="fas fa-external-link-alt mr-2"></i> www.yuque.com/jtostring
                    </a>
                </div>
            </div>
            <div class="border-t border-gray-800 mt-8 pt-8 text-center text-sm text-gray-500">
                © 2023 技术小馆. 保留所有权利.
            </div>
        </div>
    </footer>

    <script>
        mermaid.initialize({
            startOnLoad: true,
            theme: 'default',
            flowchart: {
                useMaxWidth: true,
                htmlLabels: true,
                curve: 'basis'
            }
        });
    </script>
</body>
</html>